package com.thinkgsp.jxc.service;

import java.util.List;

import com.thinkgsp.jxc.model.RpContactBalance;
import com.thinkgsp.jxc.model.RpCustomerContact;
import com.thinkgsp.jxc.persistence.ContactBalanceMapper;
import com.thinkgsp.jxc.persistence.mybatis.PagingResult;

/**
 * 往来余额业务类
 * @author evan
 *
 */
public interface ContactBalanceService {

	/**
	 * 设置持久化类，本方法用于测试目的
	 * @param cbMapper
	 */
	public void setContactBalanceMapper(ContactBalanceMapper cbMapper);
	
	/**
	 * 根据Id获取往来余额对象
	 * @param id
	 * @return
	 */
	public RpContactBalance getContactBalance(Long id);
	
	/**
	 * 获取应收账款往来余额列表
	 * @param begYear 开始年份
	 * @param begPeriod 开始期间
	 * @param endYear 截止年份
	 * @param endPeriod 截止期间
	 * @return
	 */
	public List<RpContactBalance> getContactBalanceListForAccountsReceivable(Integer begYear,Integer begPeriod,Integer endYear,Integer endPeriod);
	/**
	 * 获取应收账款往来余额列表(分页)
	 * @param begYear
	 * @param begPeriod
	 * @param endYear
	 * @param endPeriod
	 * @param start
	 * @param size
	 * @return
	 */
	public PagingResult<RpContactBalance> getContactBalanceListForAccountsReceivable(Integer begYear,Integer begPeriod,Integer endYear,Integer endPeriod,int start,int size);
	
	/**
	 * 获取应收账款往来余额列表
	 * @param begYear 开始年份
	 * @param begPeriod 开始期间
	 * @param endYear 截止年份
	 * @param endPeriod 截止期间
	 * @param custId 客户Id
	 * @return
	 */
	public List<RpContactBalance> getContactBalanceListForAccountsReceivable(Integer begYear,Integer begPeriod,Integer endYear,Integer endPeriod,Integer custId);
	
	/**
	 * 获取应付账款往来余额列表
	 * @param begYear 开始年份
	 * @param begPeriod 开始期间
	 * @param endYear 截止年份
	 * @param endPeriod 截止期间
	 * @return
	 */
	public List<RpContactBalance> getContactBalanceListForAccountsPayable(Integer begYear,Integer begPeriod,Integer endYear,Integer endPeriod);
	/**
	 * 获取应付账款往来余额列表(分页)
	 * @param begYear
	 * @param begPeriod
	 * @param endYear
	 * @param endPeriod
	 * @param start
	 * @param size
	 * @return
	 */
	public PagingResult<RpContactBalance> getContactBalanceListForAccountsPayable(Integer begYear,Integer begPeriod,Integer endYear,Integer endPeriod,int start,int size);
	
	/**
	 * 获取应付账款往来余额列表
	 * @param begYear 开始年份
	 * @param begPeriod 开始期间
	 * @param endYear 截止年份
	 * @param endPeriod 截止期间
	 * @param custId
	 * @return
	 */
	public List<RpContactBalance> getContactBalanceListForAccountsPayable(Integer begYear,Integer begPeriod,Integer endYear,Integer endPeriod,Integer custId);
	
	/**
	 * 获取客户应收应付往来
	 * @param begYear 开始年份
	 * @param begPeriod 开始期间
	 * @param endYear 截止年份
	 * @param endPeriod 截止期间
	 * @return
	 */
	public List<RpCustomerContact> getCustomerContactList(Integer begYear,Integer begPeriod,Integer endYear,Integer endPeriod,Integer custId);
	/**
	 * 获取客户应收应付往来(分页)
	 * @param begYear
	 * @param begPeriod
	 * @param endYear
	 * @param endPeriod
	 * @param start
	 * @param size
	 * @return
	 */
	public PagingResult<RpCustomerContact> getCustomerContactList(Integer begYear,Integer begPeriod,Integer endYear,Integer endPeriod,Integer custId,int start,int size);
}
